pipeline {
	agent any 
	options{
		timeout(time:1, unit: 'HOURS') // 所有任务一个小时内完成
	}
	stages {

		stage("阶段1"){
			steps{
				println '执行阶段1任务'
			}
		}

		stage("阶段2"){
			steps{
				println "执行阶段2任务"
			}
			// 条件满足时触发
			post{
				always {
					script {
						println 'post.always 总会执行这个阶段的步骤'
					}
				}

				success {
					script {
						println 'post.success 成功时触发'
					}
				}

				changed {
					script {
						println 'post.changed 改变时触发'
					}
				}

				aborted {
					script {
						println 'post.aborted 抛出异常时触发'
					}
				}

				failure {
					script {
						println 'post.failure 失败时触发'
					}
				}
			} 
		}

		stage("阶段3 并行执行 "){
			parallel{

				stage("并行执行1"){
					stages{
                        // 顺序执行1
						stage('并行执行1 顺序执行1'){
							steps{
								echo '并行执行1->任务1'
								sh 'date'
							}
						}
                        // 顺序执行2
						stage('并行执行1 顺序执行2'){
							steps{
								echo '并行执行任务1->任务2'
								sh ' date '
							}
						}

					}
				}

				stage('并行任务2'){
					steps{
						echo '并执行任务2'
						sh  'date'
					}
				}

				stage('并行任务3'){
					steps{
						echo '并执行任务3'
						sh  'date'
					}
				}
			}
		}

		stage("超时"){
			steps{
				timeout(1){ // 默认单位分钟
					echo '1分钟内任务未完成,超时导致失败'
				}
			}
		}

	}

	// 条件满足时触发
	post{
		always {
			script {
				println 'post.always 总会执行这个阶段的步骤'
			}
		}

		success {
			script {
				println 'post.success 成功时触发'
			}
		}

		changed {
			script {
				println 'post.changed 改变时触发'
			}
		}

		aborted {
			script {
				println 'post.aborted 抛出异常时触发'
			}
		}

		failure {
			script {
				println 'post.failure 失败时触发'
			}
		}
	} 
}